# demo03_generator.py
# 定义函数gen_file，传递一个文件的路径
# 使用函数生成器，每次读取10行数据

# 定义列表
# 循环读取文件，每次读取一行放入到列表，如果达到10行，通过yield返回
# 再读取时候，清空之前的10行
def gen_file(path):
    lines = [] # 存放10条数据
    # 打开文件，按照行循环读取
    with open(path, mode='r') as fr:
        while True:
            # 读取每一行
            line = fr.readline()
            # 判断是否读取到了数据，如果读取的为空，结束循环
            if not line:
                break
            # 读取到数据，将数据放入到列表
            lines.append(line)
            # 判断是否读取到了10行
            if len(lines) == 10:
                yield lines
                # 清空列表，再存放其它的10行
                lines.clear()
    # 判断列表中是否还有数据
    if lines:
        yield lines


if __name__ == '__main__':
    gen = gen_file('/etc/passwd')
    # print(gen)
    # print(gen.__next__())
    for item in gen:
        print(item)